#include "sct/rtspserver/rtspserverinterface.h"
#include "sct/core/common.h"

#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>

using namespace sct;


#define MAXLINE 188*7
#define SERV_PORT 8880

int main(int argc, char* argv[])
{
	CRTSPServerInterface* server = NULL;
	server = CRTSPServerInterface::create("rtspserver");
	CAVParam param;
	param._type = AVT_TS;
	server->enableTsStream(param);
	server->init("/live");

	SCT_LOG("path:%s", server->getUrl());

	int sockfd;
	struct sockaddr_in servaddr, cliaddr;

	sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* create a socket */

	/* init servaddr */
	bzero(&servaddr, sizeof(servaddr));
	servaddr.sin_family = AF_INET;
	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
	servaddr.sin_port = htons(SERV_PORT);

	/* bind address and port to socket */
	if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)
	{
	perror("bind error");
	exit(1);
	}

	{
		int n;
		socklen_t len;
		char * mesg = new char[MAXLINE];

		for(;;)
		{
			len = sizeof(cliaddr);
			/* waiting for receive data */
			n = recvfrom(sockfd, mesg, MAXLINE, 0, (struct sockaddr *)&cliaddr, &len);
			if(n > 0)
			{
				server->putTsData(mesg, n, currentTime()*1000000);
			}
			else
			{
				usleep(50000);
			}
		}
	}

	return 0;
}








